<?php
/**
 * @package   auto_occasion
 * @subpackage 
 * @author    CMS
 * @copyright  2011
 * @license    All rights reserved
 */

class marqueSrv {

    /**
     * Fonction permettant d'avoir une marque par son id
     * @return object
     */
    public static function getById ($_iId) {
       $oFac = jDao::get("commun~ao_marque");
     
       return $oFac->get($_iId);
    }

    /**
     * Fonction permettant d'avoir la liste des marques
     * @return object
     */
    public static function getAll () {
       $oFac = jDao::get("commun~ao_marque"); 
       $conditions = jDao::createConditions();
       $conditions->addItemOrder('marque_libelle','asc');

       return $oFac->findBy($conditions)->fetchAll();
    }
    /**
     * Fonction permettant d'avoir la liste des marques
     * @return objectf
     */
    public static function getAllById ($id) {
       $oFac = jDao::get("commun~ao_marque");

       $records = $oFac->getAllById($id);

       return $records->fetchAll();
    }

    /**
     * Fonction permettant de supprimer une marque
     * @return object
     */
    public static function deleteById ($_iId) {
       $oFac = jDao::get("commun~ao_marque");
     
       return $oFac->delete($_iId);
    }

    /**
     * Enregistrement dans la base insert comme update
     * 
     * @param array $_toParams tableau issue du formulaire
     * @return object
     */
    public static function store ($_toParams) {

        $oFac      = jDao::get('commun~ao_marque') ;
        $oRecord   = jDao::createRecord('commun~ao_marque');

        foreach ($oRecord as $zKey => $item) {
            if (array_key_exists($zKey, $_toParams)) {
                $oRecord->$zKey = $_toParams[$zKey] ;
            }
        }
        $oRecord->marque_motCle = strtolower($_toParams['marque_libelle']);
        if ($oRecord->marque_id) {
            try {
                $oFac->update($oRecord);
                return $oRecord;
            } catch (exception $e) {
                die($e->getMessage());
            }
        } else {
            $bReturn = $oFac->insert($oRecord) ;
        }
        
        return ($bReturn) ? $oRecord : $bReturn ;
    }
    
    /**
     * Renvoie tous les fiches d'une Categorie
     * @param int $_iTypeId
     * @return array 
     */
    public static function getAllByOrder () {
        
        $oFac		= jDao::get('commun~ao_marque') ;
        $oCond		= jDao::createConditions() ;
        $oCond->addItemOrder('marque_ordre') ;

        return $oFac->findBy($oCond) ;
    }
    
    /**
     * Renvoie tous les fiches d'une Categorie
     * @param array $_toParams
     * @return array 
     */
    public static function reOrder ($_toParams) {
        
        $oFac = jDao::get('commun~ao_marque') ;
        
        $tiMarqueIds = array_key_exists('tiMarqueIds', $_toParams) ? $_toParams['tiMarqueIds'] : array() ;
        
        foreach ($tiMarqueIds as $iKey => $iMarqueId) {
            $oRec = $oFac->get($iMarqueId) ;
            $oRec->marque_ordre = $iKey ;
            $oFac->update($oRec) ;
        }
        
    }


    /**
    * Fonction permettant de supprimer des enregistrement correspondants à l'id d'une marque ds la table ao_marque_modele
    */

      public function removeMarqueModele($id){
         $sql = " DELETE FROM ao_modele  WHERE modele_marque = " . $id;
         //$sql = " DELETE FROM ao_marque_modele  WHERE marque_id = " . $id;
         $cnx = jDb::getConnection();
         $cnx->exec($sql);
      }

    /**
     * Fonction permettant d'avoir unr liste de marque
     * @return object $liste
     *
     */
    public static function getAllMarque($byOrder = false) {
        if (!$byOrder) {
            $sql = "SELECT marque_id, marque_libelle FROM ao_marque ORDER BY marque_libelle ASC";
        } else {
            $sql = "SELECT marque_id, marque_libelle FROM ao_marque ORDER BY marque_ordre ASC";
        }
        $jdb = jDb::getDbWidget();
        return $jdb->fetchAll($sql);
    }

    /**
     * Fonction permettant de récupérer les marques ayant un essai
     * @return object $liste
     *
     */
    public static function getAllMarqueEssai($byOrder = false) {
        $sql  = " SELECT ess_iMarqueId, marque_libelle, marque_id FROM ao_essais";
        $sql .= " INNER JOIN ao_marque ON marque_id = ess_iMarqueId";
        $sql .= " GROUP BY ess_iMarqueId";
        $sql .= " ORDER BY marque_libelle ASC";
        $jdb = jDb::getDbWidget();

        return $jdb->fetchAll($sql);
    }

    /**
     * Fonction permettant de savoir si une marque peut etre supprimée si pas d'annnonce associée et essai
     * @param int $imarqueId
     * 
     * @return boolean
     */
    public static function estSupprimable($imarqueId) {
        $retour = false;
        // check annonce
        $sql = "SELECT IdOccasion FROM ao_voiture_occasion WHERE Occas_Marque = " . $imarqueId ;

        $jdb = jDb::getDbWidget();
        if (!$jdb->fetchFirst($sql)) {
            // check essai
            $sqlEssai = "SELECT ess_id FROM ao_essais WHERE ess_iMarqueId = " . $imarqueId ;
            if (!$jdb->fetchFirst($sqlEssai)) {
                $retour = true;
            }
        }

        return $retour;
    }

    /**
     * Check si une marque est associée à une gamme
     * @param int $imarqueId
     * 
     * @return int
     */
    public static function isLinkedWithGamme($imarqueId) {
        $retour = 1;
        $sql = " SELECT ess_id FROM ao_essais WHERE ess_iTypeId = 2 AND ess_iMarqueId = " . $imarqueId ;

        $jdb = jDb::getDbWidget();
        if (!$row = $jdb->fetchFirst($sql)) {
            $retour = 0;
        }

        return $row->ess_id;
    }

}